package com.bbva.kyfb.kyfbdto.firmas.fachada.v01;

import java.io.Serializable;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.xml.bind.annotation.XmlRootElement;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

/**
 * Informacion del usuario.
 *
 * @author xe35008
 * @version 1.0
 */
@XmlRootElement
public class InfoUserReference implements Serializable{

	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 1L;


	/** Tipo de firma. */
	private String sTipoFirma;

	/** Aplicacion de origen. */
	private String sCodOrigen;

	/** Canal asociado a la referencia. */
	private String sCanal;

	/** Banco interno asociado a la referencia. */
	private String sBancoInt;

	/** Referencia a la que esta vinculado el usuario. */
	private String sReferencia;

	/** Codigo de usuario. */
	private String sCodUsuario;

	/** Codigo de usuario que firma. */
	private String sCodUsuarioFirma;

	/** Nif del usuario. */
	private String sNIFUsuario;

	/** Password del usuario. */
	private String sPasswordUsuario;

	/** Password fisica. */
	private String sPasswordFisico;

	/** Token fisico. */
	private String sTokenFisico;

	/** Poder de firma del usuario. */
	private String sPoderFirma;

	/** Tipo de validacion de la firma. */
	private String sTipoValidacion;

	/** Banco producto. */
	private String sBancoProducto;

	/** Producto Servicio. */
	private String sProductoServicio;

	/** Codigo SubProducto. */
	private String sCodSubProducto;
	/**
	 * Numero aleatorio para la firma por formula.
	 */
	private String sNumeroAleatorio;

	/** Ip del cliente que utiliza el servicio. */
	private String sIpCliente;
	/**
	 * Identificador de la session PAU en caso de ser validacion de dos pasos.
	 */
	private String sIdSession;
	/**
	 * Tipo de firmante que es el usuario.
	 */
	private String sTipoFirmante;


	/**
	 * Instantiates a new info user reference.
	 */
	public InfoUserReference (){}

	/**
	 * Gets the s tipo firmante.
	 *
	 * @return the sTipoFirmante
	 */
	public String getsTipoFirmante() {
		return sTipoFirmante;
	}


	/**
	 * Sets the s tipo firmante.
	 *
	 * @param sTipoFirmante the sTipoFirmante to set
	 */
	public void setsTipoFirmante(final String sTipoFirmante) {
		this.sTipoFirmante = sTipoFirmante;
	}


	/**
	 * Gets the s banco producto.
	 *
	 * @return the sBancoProducto
	 */
	@NotNull
	@NotEmpty
	public String getsBancoProducto() {
		return sBancoProducto;
	}


	/**
	 * Sets the s banco producto.
	 *
	 * @param sBancoProducto the sBancoProducto to set
	 */
	public void setsBancoProducto(final String sBancoProducto) {
		this.sBancoProducto = sBancoProducto;
	}


	/**
	 * Gets the s producto servicio.
	 *
	 * @return the sProductoServicio
	 */
	@NotNull
	@NotEmpty
	public String getsProductoServicio() {
		return sProductoServicio;
	}


	/**
	 * Sets the s producto servicio.
	 *
	 * @param sProductoServicio the sProductoServicio to set
	 */
	public void setsProductoServicio(final String sProductoServicio) {
		this.sProductoServicio = sProductoServicio;
	}


	/**
	 * Gets the s cod sub producto.
	 *
	 * @return the sCodSubProducto
	 */
	@NotNull
	@NotEmpty
	public String getsCodSubProducto() {
		return sCodSubProducto;
	}


	/**
	 * Sets the s cod sub producto.
	 *
	 * @param sCodSubProducto the sCodSubProducto to set
	 */
	public void setsCodSubProducto(final String sCodSubProducto) {
		this.sCodSubProducto = sCodSubProducto;
	}


	/**
	 * Gets the s numero aleatorio.
	 *
	 * @return the sNumeroAleatorio
	 */
	//@NotEmpty
	@Length(min=0,max=9)
	public String getsNumeroAleatorio() {
		return sNumeroAleatorio;
	}


	/**
	 * Sets the s numero aleatorio.
	 *
	 * @param sNumeroAleatorio the sNumeroAleatorio to set
	 */
	public void setsNumeroAleatorio(final String sNumeroAleatorio) {
		this.sNumeroAleatorio = sNumeroAleatorio;
	}


	/**
	 * Gets the s ip cliente.
	 *
	 * @return the sIpCliente
	 */
	public String getsIpCliente() {
		return sIpCliente;
	}


	/**
	 * Sets the s ip cliente.
	 *
	 * @param sIpCliente the sIpCliente to set
	 */
	public void setsIpCliente(final String sIpCliente) {
		this.sIpCliente = sIpCliente;
	}


	/**
	 * Gets the s id session.
	 *
	 * @return the sIdSession
	 */
	public String getsIdSession() {
		return sIdSession;
	}


	/**
	 * Sets the s id session.
	 *
	 * @param sIdSession the sIdSession to set
	 */
	public void setsIdSession(final String sIdSession) {
		this.sIdSession = sIdSession;
	}



	/**
	 * Gets the s tipo firma.
	 *
	 * @return the sTipoFirma
	 */
	@NotNull
	@NotEmpty
	@Length(min=2,max=2)
	@Pattern(regexp="FS|FH")
	public String getsTipoFirma() {
		return sTipoFirma;
	}


	/**
	 * Sets the s tipo firma.
	 *
	 * @param sTipoFirma the sTipoFirma to set
	 */
	public void setsTipoFirma(final String sTipoFirma) {
		this.sTipoFirma = sTipoFirma;
	}


	/**
	 * Gets the s cod origen.
	 *
	 * @return the sCodOrigen
	 */
	//@NotEmpty
	//@Length(min=4,max=4)
	public String getsCodOrigen() {
		return sCodOrigen;
	}


	/**
	 * Sets the s cod origen.
	 *
	 * @param sCodOrigen the sCodOrigen to set
	 */
	public void setsCodOrigen(final String sCodOrigen) {
		this.sCodOrigen = sCodOrigen;
	}


	/**
	 * Gets the s canal.
	 *
	 * @return the sCanal
	 */
	@NotNull
	@NotEmpty
	@Length(min=4,max=4)
	public String getsCanal() {
		return sCanal;
	}


	/**
	 * Sets the s canal.
	 *
	 * @param sCanal the sCanal to set
	 */
	public void setsCanal(final String sCanal) {
		this.sCanal = sCanal;
	}


	/**
	 * Gets the s banco int.
	 *
	 * @return the sBancoInt
	 */
	@NotNull
	@NotEmpty
	@Length(min=4,max=4)
	public String getsBancoInt() {
		return sBancoInt;
	}


	/**
	 * Sets the s banco int.
	 *
	 * @param sBancoInt the sBancoInt to set
	 */
	public void setsBancoInt(final String sBancoInt) {
		this.sBancoInt = sBancoInt;
	}


	/**
	 * Gets the s referencia.
	 *
	 * @return the sReferencia
	 */
	@NotNull
	@NotEmpty
	@Length(min=8,max=8)
	public String getsReferencia() {
		return sReferencia;
	}


	/**
	 * Sets the s referencia.
	 *
	 * @param sReferencia the sReferencia to set
	 */
	public void setsReferencia(final String sReferencia) {
		this.sReferencia = sReferencia;
	}


	/**
	 * Gets the s cod usuario.
	 *
	 * @return the sCodUsuario
	 */
	@NotNull
	@NotEmpty
	@Length(min=1,max=8)
	public String getsCodUsuario() {
		return sCodUsuario;
	}


	/**
	 * Sets the s cod usuario.
	 *
	 * @param sCodUsuario the sCodUsuario to set
	 */
	public void setsCodUsuario(final String sCodUsuario) {
		this.sCodUsuario = sCodUsuario;
	}


	/**
	 * Gets the s cod usuario firma.
	 *
	 * @return the sCodUsuarioFirma
	 */
	//@NotNull
	//@NotEmpty
	//@Length(min=1,max=8)
	public String getsCodUsuarioFirma() {
		return sCodUsuarioFirma;
	}


	/**
	 * Sets the s cod usuario firma.
	 *
	 * @param sCodUsuarioFirma the sCodUsuarioFirma to set
	 */
	public void setsCodUsuarioFirma(final String sCodUsuarioFirma) {
		this.sCodUsuarioFirma = sCodUsuarioFirma;
	}


	/**
	 * Gets the s nif usuario.
	 *
	 * @return the sNIFUsuario
	 */
	//@NotEmpty
	public String getsNIFUsuario() {
		return sNIFUsuario;
	}


	/**
	 * Sets the s nif usuario.
	 *
	 * @param sNIFUsuario the sNIFUsuario to set
	 */
	public void setsNIFUsuario(final String sNIFUsuario) {
		this.sNIFUsuario = sNIFUsuario;
	}


	/**
	 * Gets the s password usuario.
	 *
	 * @return the sPasswordUsuario
	 */
	@NotNull
	@NotEmpty
	public String getsPasswordUsuario() {
		return sPasswordUsuario;
	}


	/**
	 * Sets the s password usuario.
	 *
	 * @param sPasswordUsuario the sPasswordUsuario to set
	 */
	public void setsPasswordUsuario(final String sPasswordUsuario) {
		this.sPasswordUsuario = sPasswordUsuario;
	}


	/**
	 * Gets the s password fisico.
	 *
	 * @return the sPasswordFisico
	 */
	public String getsPasswordFisico() {
		return sPasswordFisico;
	}


	/**
	 * Sets the s password fisico.
	 *
	 * @param sPasswordFisico the sPasswordFisico to set
	 */
	public void setsPasswordFisico(final String sPasswordFisico) {
		this.sPasswordFisico = sPasswordFisico;
	}


	/**
	 * Gets the s token fisico.
	 *
	 * @return the sTokenFisico
	 */
//	@NotNull
//	@NotEmpty
//	@Length(min=1,max=40)
	public String getsTokenFisico() {
		return sTokenFisico;
	}


	/**
	 * Sets the s token fisico.
	 *
	 * @param sTokenFisico the sTokenFisico to set
	 */
	public void setsTokenFisico(final String sTokenFisico) {
		this.sTokenFisico = sTokenFisico;
	}


	/**
	 * Gets the s poder firma.
	 *
	 * @return the sPoderFirma
	 */
	//@NotEmpty
	//	@Length(min=1,max=2)
	//	@Pattern(regexp="S|M2|M3|M4")
	public String getsPoderFirma() {
		return sPoderFirma;
	}


	/**
	 * Sets the s poder firma.
	 *
	 * @param sPoderFirma the sPoderFirma to set
	 */
	public void setsPoderFirma(final String sPoderFirma) {
		this.sPoderFirma = sPoderFirma;
	}


	/**
	 * Gets the s tipo validacion.
	 *
	 * @return the sTipoValidacion
	 */
	@NotNull
	@NotEmpty
	@Length(min=5,max=5)
	@Pattern(regexp="CTK01|CTK02|COT01|FTK01|FOT01")
	public String getsTipoValidacion() {
		return sTipoValidacion;
	}


	/**
	 * Sets the s tipo validacion.
	 *
	 * @param sTipoValidacion the sTipoValidacion to set
	 */
	public void setsTipoValidacion(final String sTipoValidacion) {
		this.sTipoValidacion = sTipoValidacion;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return new StringBuilder("InfoUserReference [sTipoFirma=").append(sTipoFirma)
				.append(", sCodOrigen=").append(sCodOrigen)
				.append(", sCanal=").append(sCanal)
				.append(", sBancoInt=").append(sBancoInt)
				.append(", sReferencia=").append(sReferencia)
				.append(", sCodUsuario=").append(sCodUsuario)
				.append(", sCodUsuarioFirma=").append(sCodUsuarioFirma)
				.append(", sNIFUsuario=").append(sNIFUsuario)
				.append(", sPasswordUsuario=").append(sPasswordUsuario)
				.append(", sPasswordFisico=").append(sPasswordFisico)
				.append(", sTokenFisico=").append(sTokenFisico)
				.append(", sPoderFirma=").append(sPoderFirma)
				.append(", sTipoValidacion=").append(sTipoValidacion)
				.append(", sBancoProducto=").append(sBancoProducto)
				.append(", sProductoServicio=").append(sProductoServicio)
				.append(", sCodSubProducto=").append(sCodSubProducto)
				.append(", sNumeroAleatorio=").append(sNumeroAleatorio)
				.append(", sIpCliente=").append(sIpCliente)
				.append(", sIdSession=").append(sIdSession)
				.append(", sTipoFirmante=").append(sTipoFirmante).append("]").toString();
	}

}
